<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
		<script>
			
			//第一题
			/*
			输出描述:
			找出元素 item 在给定数组 arr 中的位置,如果数组中存在 item，则返回元素在数组中的位置，否则返回 -1	
			indexOf([ 1, 2, 3, 4 ], 3)
			*/			
			var arr=[1,2,3,4];
			var item=3;
			function item_location(arr,item){
				console.log("第一题:",arr.indexOf(item));
			}
			item_location(arr,item);
			//第一题
			
			//第二题
			/*
			输出描述:
			计算给定数组 arr 中所有元素的总和
			sum([ 1, 2, 3, 4 ])
			*/			
//			var arr=[1,2,3,4];
//			for(var i=0,sum=0;i<arr.length;i++){
//				 sum+=arr[i];
//			}
//			console.log("第二题:",sum);
			var arr=[1,2,3,4];
			var sum=arr.reduce(function(prev,now,index,arry){
				return prev+now
			})
			console.log("第二题:",sum);		
			//第二题
			
			//第三题
			/*
			题目描述
			移除数组 arr 中的所有值与 item 相等的元素。不要直接修改数组 arr，结果返回新的数组
			remove([1, 2, 3, 4, 2], 2)
			*/
			var arr=[1,2,3,4,2];
			var item=2;
			function remove(arr,item){
				var arr2=arr.filter(function(an,index){
					return arr[index]!==item; 
				})
				console.log("第三题:",arr2);
			}
			remove(arr,item);
			//第三题
			
			//第四题
			/*
			题目描述
			移除数组 arr 中的所有值与 item 相等的元素，直接在给定的 arr 数组上进行操作，并将结果返回
			removeDirectly([1, 2, 2, 3, 4, 2, 2],2)
			*/
			var arr=[1,2,2,3,4,2,2]; 
			var item=2;
			function removeDirectly(arr,item){
				for(var i=0;i<arr.length;i++){
					if(arr[i]==item){
						arr.splice(i,1);
						i--;
					}
				}
				console.log("第四题:",arr);
			}
			removeDirectly(arr,item)
			//第四题
			
			//第五题
			/*
			题目描述
			在数组 arr 末尾添加元素 item。不要直接修改数组 arr，结果返回新的数组
			append([1, 2, 3, 4],10)
			*/			
			var arr=[1,2,3,4];
			var item=10;
			
			function append(arr,item){
				var arr2=[];
				arr.forEach(function(it,index){
					arr2[index]=arr[index];
					if(arr[index]=arr.length-1){
						arr2.push(item);
					}
				})			
				return arr2
			}
			var arr2=append(arr,item);
			console.log("第五题:",arr2);
			
			//第五题
			
			
			//第六题
			/*
			题目描述
			删除数组 arr 最后一个元素。不要直接修改数组 arr，结果返回新的数组
			truncate([1, 2, 3, 4])
			*/
			var arr=[1,2,3,4];
			function truncate(arr){
				var arr2=arr.filter(function(item,index){
					return index!==arr.length-1;
				})
				console.log("第六题:",arr2);
			}
			truncate(arr);
			//第六题
			
			//第七题
			/*
			题目描述
			在数组 arr 开头添加元素 item。不要直接修改数组 arr，结果返回新的数组			
			prepend([1, 2, 3, 4],10)
			*/			
			var arr=[1,2,3,4];
			var item=10;
			
			function prepend(arr,item){
				var arr2=[];
				arr.forEach(function(it,index){
					arr2[index]=arr[index];
					if(index==arr.length-1){
						arr2.unshift(10);
					}
				})
				return arr2;
			}
			var arr2=prepend(arr,item);
			console.log("第七题:",arr2);						
			//第七题
			
			//第八题
			/*
			题目描述
			删除数组 arr 第一个元素。不要直接修改数组 arr，结果返回新的数组			
			curtail([1, 2, 3, 4])
			*/
			var arr=[1,2,3,4];
			function curtail(arr){
				var arr2=arr.filter(function(item,index){
					return index!==0;				
				})
				return arr2;
			}
			var arr2=curtail(arr);
			console.log("第八题:",arr2);			
			//第八题
			
			//第九题
			/*
			题目描述
			合并数组 arr1 和数组 arr2。不要直接修改数组 arr，结果返回新的数组			
			concat([1, 2, 3, 4], ['a', 'b', 'c', 1])
			*/
			var arr1=[1,2,3,4];
			var arr2=["a","b","c","1"];			
			function concat(arr1,arr2){
				return arr1.concat(arr2);
			}
			var arr3=concat(arr1,arr2);
			console.log("第九题:",arr3);			
			//第九题
			
			//第十题
			/*
			题目描述
			在数组 arr 的 index 处添加元素 item。不要直接修改数组 arr，结果返回新的数组			
			insert([1, 2, 3, 4], 'z', 2)
			*/
			var arr=[1,2,3,4];
			var z=3;
			var item=2;
			function insert(arr,z,item){
				var arr2=[];
				arr.forEach(function(it,index){
					arr2[index]=arr[index];
				})
				arr2.splice(z,0,item);
				return arr2;
			}
			var arr2=insert(arr,z,item);
			console.log("第十题:",arr2);
			//第十题
			
			//第十一题
			/*
			题目描述
			统计数组 arr 中值等于 item 的元素出现的次数			
			count([1, 2, 4, 4, 3, 4, 3], 4)
			*/
			var arr=[1,2,4,4,3,4,3];
			var item=4;
			var time=0;
			function count(arr,item){
				arr.forEach(function(it,index){
					if(arr[index]==item){
						time++;
					}
				})
				return time;
			}
			var time=count(arr,item);
			console.log("第十一题:",time);			
			//第十一题
			
			//第十二题
			/*
			题目描述
			找出数组 arr 中重复出现过的元素			
			duplicates([1, 2, 4, 4, 3, 3, 1, 5, 3]).sort()
			*/
			var arr=[1,2,4,4,3,3,1,5,3];
			function duplicates(arr){
				var arr2=[];
				arr.forEach(function(item,index){
					var flag=true;
					if(arr2.length){
						for(var k=0;k<arr2.length;k++){
							if(arr2[k]==arr[index]){
								flag=false;
								break;
							}
						}
					}				
					if(flag){
						for(var j=index+1;j<arr.length;j++){
							if(arr[index]==arr[j]){
								arr2.push(arr[index]);
								break;
							}
						}
					}
									
				})
				return arr2;
			}
			var arr2=duplicates(arr);
			console.log("第十二题:",arr2)
			//第十二题
			
			
			//第十三题
			/*
			题目描述
			为数组 arr 中的每个元素求二次方。不要直接修改数组 arr，结果返回新的数组			
			square([1, 2, 3, 4])
			*/
			var arr=[1,2,3,4];
			function square(arr){
				var arr2=arr.map(function(item,index){
					return item*item				
				})
				return arr2;
			}			
			var arr2=square(arr);
			console.log(arr2);			
			//第十三题
			
			//第十四题
			/*
			题目描述
			在数组 arr 中，查找值与 item 相等的元素出现的所有位置			
			findAllOccurrences('abcdefabc'.split(''), 'a').sort()
			*/
			var text="abcdefabc";
			var text2=text.split("");
			var item="a";
					
			
			function findAllOccurrences(arr,item){
				text2.forEach(function(it,index){
					if(text2[index].indexOf(item)==0){
						console.log(index);
					}
				})
				
			}
			findAllOccurrences(text2,item)
			//第十四题

			
			
			
		</script>
	</body>
</html>
